//package com.matrix.kernel.util;
//
//import com.alibaba.fastjson.JSON;
//import org.apache.shiro.authz.AuthorizationException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.dao.DuplicateKeyException;
//import org.springframework.stereotype.Component;
//import org.springframework.web.servlet.HandlerExceptionResolver;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
///**
// * 异常处理器
// * 
// * @author chenshun
// * @email sunlightcs@gmail.com
// * @date 2016年10月27日 下午10:16:19
// */
//@Component
//public class RRExceptionHandler implements HandlerExceptionResolver {
//	private Logger logger = LoggerFactory.getLogger(getClass());
//	
//	@Override
//	public ModelAndView resolveException(HttpServletRequest request,
//			HttpServletResponse response, Object handler, Exception ex) {
//		R r = new R();
//		try {
//			response.setContentType("application/json;charset=utf-8");
//			response.setCharacterEncoding("utf-8");
//			
//			if (ex instanceof RRException) {
//				r.put("code", ((RRException) ex).getCode());
//				r.put("msg", ((RRException) ex).getMessage());
//			}else if(ex instanceof DuplicateKeyException){
//				r = R.error("数据库中已存在该记录");
//			}else if(ex instanceof AuthorizationException){
//				r = R.error("没有权限，请联系管理员授权");
//			}else{
//				r = R.error();
//			}
//			
//			//记录异常日志
//			logger.error(ex.getMessage(), ex);
//			
//			String json = JSON.toJSONString(r);
//			response.getWriter().print(json);
//		} catch (Exception e) {
//			logger.error("RRExceptionHandler 异常处理失败", e);
//		}
//		return new ModelAndView();
//	}
//}
